home *** CD-ROM | disk | FTP | other *** search
- { Checks.pas -- Display checkmarked menu items }
-
- program Checks;
-
- {$R checks.res}
-
- uses WinTypes, WinProcs, WObjects;
-
- const
-
- id_Menu = 100; { Menu resource ID }
- cm_Item1 = 101; { Command IDs }
- cm_Item2 = 102;
- cm_Item3 = 103;
- cm_Item4 = 104;
- numItems = 4; { Number of checkmarked commands }
-
- type
-
- ChecksApplication = object(TApplication)
- procedure InitMainWindow; virtual;
- end;
-
- PChecksWindow = ^ChecksWindow;
- ChecksWindow = object(TWindow)
- constructor Init(AParent: PWindowsObject; ATitle: PChar);
- procedure CMItem1(var Msg: TMessage);
- virtual cm_First + cm_Item1;
- procedure CMItem2(var Msg: TMessage);
- virtual cm_First + cm_Item2;
- procedure CMItem3(var Msg: TMessage);
- virtual cm_First + cm_Item3;
- procedure CMItem4(var Msg: TMessage);
- virtual cm_First + cm_Item4;
- procedure Paint(PaintDC: HDC; var PaintInfo: TPaintStruct);
- virtual;
- end;
-
-
- {- Toggle a checkmarked menu item on or off }
- procedure ToggleCheck(Menu: HMenu; MenuItemID: Word);
- var
- MAttr, WCheck: Word;
- begin
- MAttr := GetMenuState(Menu, MenuItemID, mf_ByCommand);
- if (MAttr and mf_Checked) = mf_Checked then
- WCheck := mf_ByCommand or mf_Unchecked
- else
- WCheck := mf_ByCommand or mf_Checked;
- CheckMenuItem(Menu, MenuItemID, WCheck)
- end;
-
-
- { ChecksApplication }
-
- {- Initialize ChecksApplication object's window }
- procedure ChecksApplication.InitMainWindow;
- begin
- MainWindow := New(PChecksWindow, Init(nil, 'Checkmarks in Menus'))
- end;
-
-
- { ChecksWindow }
-
- {- Construct ChecksWindow object }
- constructor ChecksWindow.Init(AParent: PWindowsObject; ATitle: PChar);
- begin
- TWindow.Init(AParent, ATitle);
- Attr.Menu := LoadMenu(HInstance, PChar(id_Menu))
- end;
-
- { ChecksWindow command response methods }
-
- procedure ChecksWindow.CMItem1(var Msg: TMessage);
- begin
- ToggleCheck(Attr.Menu, cm_Item1);
- InvalidateRect(HWindow, nil, true)
- end;
-
- procedure ChecksWindow.CMItem2(var Msg: TMessage);
- begin
- ToggleCheck(Attr.Menu, cm_Item2);
- InvalidateRect(HWindow, nil, true)
- end;
-
- procedure ChecksWindow.CMItem3(var Msg: TMessage);
- begin
- ToggleCheck(Attr.Menu, cm_Item3);
- InvalidateRect(HWindow, nil, true)
- end;
-
- procedure ChecksWindow.CMItem4(var Msg: TMessage);
- begin
- ToggleCheck(Attr.Menu, cm_Item4);
- InvalidateRect(HWindow, nil, true)
- end;
-
- {- Update the display }
- procedure ChecksWindow.Paint(PaintDC: HDC;
- var PaintInfo: TPaintStruct);
- var
- MAttr, Item: Word;
- StateStr, ItemStr: string[3];
- S: string[40];
- begin
- TWindow.Paint(PaintDC, PaintInfo);
- for Item := 0 to numItems - 1 do
- begin
- MAttr := GetMenuState(Attr.Menu, cm_Item1 + Item, mf_Checked);
- if (MAttr and mf_Checked) = mf_Checked then
- StateStr := 'On'
- else
- StateStr := 'Off';
- Str(Item + 1, ItemStr);
- S := 'Item ' + ItemStr + ' state = ' + StateStr;
- TextOut(PaintDC, 80, 40 + (Item * 20), @S[1], Length(S))
- end
- end;
-
- var
-
- ChecksApp: ChecksApplication;
-
- begin
- ChecksApp.Init('ChecksApp');
- ChecksApp.Run;
- ChecksApp.Done
- end.
-
-
- {--------------------------------------------------------------
- Copyright (c) 1991 by Tom Swan. All rights reserved.
- Revision 1.00 Date: 2/20/1991
- ---------------------------------------------------------------}
-